# -*- coding: utf-8 -*-
#   涉及到操作系统方面的方法
# @Time    ： 2025/11/13  23:48
# @Auther  ： 徐良
# File     :  sysFunction.py
from PySide6.QtCore import QSize
from PySide6.QtWidgets import QApplication
from typing import Tuple

def get_display_resolution() -> Tuple[int, int]:
    """
    获取主显示屏的物理分辨率（单位：像素）

    返回:
        包含宽度和高度的元组 (width, height)

    异常:
        RuntimeError: 如果无法获取屏幕分辨率

    示例:
        >>> width, height = get_display_resolution()
        >>> print(f"屏幕分辨率: {width}x{height}")
        屏幕分辨率: 1920x1080

    注意:
        1. 如果不存在 QApplication 实例，函数会临时创建一个
        2. 返回的是物理分辨率，不是逻辑分辨率（不考虑缩放因素）
        3. 在多显示器系统中，返回的是主显示器的分辨率
    """
    try:
        app = QApplication.instance()
        if app is None:
            # 创建临时应用实例（不显示GUI）
            app = QApplication([])
            is_temp_app = True
        else:
            is_temp_app = False

        screen = QApplication.primaryScreen()
        if screen is None:
            raise RuntimeError("无法获取主显示屏信息")

        size = screen.size()
        if not isinstance(size, QSize):
            raise RuntimeError("获取的屏幕尺寸无效")

        if is_temp_app:
            # 清理临时创建的QApplication
            app.quit()

        return size.width(), size.height()

    except Exception as e:
        raise RuntimeError(f"获取屏幕分辨率失败: {str(e)}")
